// 初始化管理员账号云函数
"use strict";

const db = uniCloud.database();
const usersCollection = db.collection("users");
const crypto = require("crypto");

// 密码加密函数
function encryptPassword(password) {
  const salt = crypto.randomBytes(16).toString("hex");
  const hash = crypto
    .pbkdf2Sync(password, salt, 1000, 64, "sha512")
    .toString("hex");
  return {
    hash,
    salt,
  };
}

exports.main = async (event, context) => {
  try {
    // 检查是否已经存在管理员账号
    const adminUser = await usersCollection
      .where({
        user_type: "admin",
        username: "admin",
      })
      .limit(1)
      .get();

    // 如果已经存在管理员账号
    if (adminUser.data && adminUser.data.length > 0) {
      return {
        code: 1,
        message: "管理员账号已存在，不能重复创建",
      };
    }

    // 设置默认密码为123456
    const defaultPassword = "123456";
    const encryptedPassword = encryptPassword(defaultPassword);

    // 当前时间戳
    const now = Date.now();

    // 创建管理员账号
    const adminData = {
      username: "admin",
      password_hash: encryptedPassword.hash,
      password_salt: encryptedPassword.salt,
      nickname: "系统管理员",
      role: "admin",
      user_type: "admin", // 区分管理员用户和C端用户
      status: 1, // 1 表示启用状态
      register_date: now,
      last_login_date: null,
    };

    // 添加到数据库
    const insertResult = await usersCollection.add(adminData);

    if (insertResult.id) {
      return {
        code: 0,
        message: "管理员账号创建成功",
        data: {
          username: "admin",
        },
      };
    } else {
      return {
        code: -1,
        message: "管理员账号创建失败",
      };
    }
  } catch (error) {
    console.error("初始化管理员账号失败:", error);
    return {
      code: -1,
      message: "初始化管理员账号失败: " + error.message,
    };
  }
};
